#!/bin/bash
#
# Trabajo Practico 1 Ejercicio 1b
# Entrega número: 1
#
# - Integrantes:
#	- Martinez, Guillermo	DNI: 34510461
#	- Meli, Marcos		DNI: 31832759
#	- Reyes, Leandro	DNI: 34213699
#	- Rodriguez, Lucas	DNI: 34265017
#	- Cortez, Martin	DNI: 30440023
#

# De acuerdo al siguiente script responda las siguientes preguntas:
#
#  1- ¿Cuál es el objetivo de este script?
# 	Mostrar el contenido de un archivo ordenandolo de manera ascendente
#      	o descendente, segun el parámetro recibido.
#
#  2- ¿Qué parámetros recibe?
# 	$1 nombre_del_archivo
#	$2 tipo_ordenamiento (A o Z)
#
#  3- Comentar línea a línea especificando qué hace cada sentencia.
#     Describir los comandos sort y grep especificando qué opciones permiten.
#	>>Comando sort:
#	Ordena lineas de archivos de texto, los concatena en caso de ser varios
#	y los muestra por la salida standard.
#	Algunas opciones permitidas:
# 		-b   ignora blancos al comienzo
# 		-d   considera solo blancos y caracteres alfanumericos
# 		-f   convierte todo a mayusculas
# 		-g   compara segun el valor numerico
# 		-i   considera solo caracteres imprimibles
# 		-M   ordena los meses del año
# 		-h   compara numeros del tipo 2K, 1G
# 		-n   compara segun el valor numerico de los string
# 		-R   ordena al azar
# 		-r   ordena al reves
# 		-V   ordena segun versiones numéricas
#	>>Comando grep:
#	Imprime lineas que concuerden con un patron en un archivo 
#	dado, o entrada standard.
#	Algunas opciones permitidas:
# 		-f      obtiene patrones desde archivo, uno por linea
# 		-i      ignora mayusculas y minusculas
# 		-v      invierte el sentido de la comparacion
# 		-x      selecciona cuando son exactamente la misma linea completa
# 		-c      muestra cuantas lineas cumplen el patron
# 		-m NUM  deja de buscar despues de NUM aciertos
# 		-q      no muestra nada, pero devuelve 0 si encontro algo
#		-h      suprime nombres de archivos antes de las lineas concordantes en la salida
# 		-n      prefija  linea  de  salida  con num de linea archivo de entrada correspondiente
# 		-s      suprime los mensajes de error sobre ficheros que no existen o no se pueden leer
#		-w      selecciona lineas que contienen concordancias que forman palabras completas.
# 		-o      muestra solo la cadena buscada por el PATRON

Error()                    	 # Declara la función Error
{                          	 # Inicio de la función Error
echo "Error. La sintaxis del script es la siguiente:"  #
echo "Para orden ascendente: $0 nombre_archivo A"      # Envía texto a la salida standar
echo "Para orden descendente: $0 nombre_archivo Z"     #
}                           	 # Fin de la función Error

if test $# -lt 2           	 # Evalua si la cantidad de argumentos es < 2
  then                     	 # La evaluación del if resulto verdadera
    Error                  	 # Llamada a la funcion Error
  elif test -f $1 && (test $2 = "A" || test $2 = "Z")  #Evalua si el parámetro 1 es un fichero y si el parámetro 2 es una A o una Z
    then                    	 # La evaluación del if resulto verdadera
      if test $2 = "A"      	 # Evalua si el parametro 2 es una A
        then               	 # La evaluación del if resulto verdadera
          cat $1 | sort -d 	 # Muestra el fichero con orden ascendente
      elif test $2 = "Z"   	 # La evaluación del if resulto falsa y evalua si el parametro 2 es una Z
        then               	 # La evaluación del if resulto verdadera
          cat $1 | sort -r 	 # Muestra el fichero con orden descendente
      fi                  	 # Fin del if
    else                   	 # La evaluación del if resulto falsa
      Error                	 # Llamada a la funcion Error
fi                         	 # Fin del if

#~ FIN DE ARCHIVO